Week01_네트워크 기초

Week 01 · 네트워크 기초

Day 1 · OSI 7계층 · 캡슐화 · 이더넷 · ARP

1-1. 왜 계층을 나누는가

네트워크 통신은 "전기 신호를 보내는 일"부터 "웹페이지를 보여주는 일"까지 할 일이 너무 많다. 그래서 일을 층(계층)으로 나눠 각자 맡은 일만 하도록 약속한 것이 OSI 7계층 모델(ISO 표준)이다.

택배에 비유하면 이렇다. 나는 편지(데이터)만 쓴다. 편지를 상자에 넣고 송장을 붙이는 건 포장 담당, 어느 도시로 보낼지 정하는 건 물류센터, 실제로 트럭을 모는 건 기사다. 각 담당자는 자기 바로 위·아래 담당자와의 약속만 지키면 된다.

이렇게 나누면 장점이 있다. 케이블을 광케이블로 바꿔도(1계층) 웹 브라우저(7계층)는 고칠 필요가 없다. 문제가 생겼을 때 "몇 계층 문제인지"로 범위를 좁혀 진단할 수도 있다.

1-2. 계층별 역할 한눈에

계층 이름 하는 일 (한 줄) PDU(데이터 단위) 주소/식별자 대표 프로토콜 장비
7 응용 사용자 서비스 제공 데이터(메시지) - HTTP, FTP, SMTP, DNS, SSH, Telnet, SNMP L7 스위치, 프록시, WAF
6 표현 데이터 형식 변환·인코딩·압축·암호화 데이터 - JPEG, MPEG, ASCII, (암호화 개념) -
5 세션 대화(세션) 수립·유지·동기화 데이터 - NetBIOS, RPC, (SSL/TLS를 여기로 보기도) -
4 전송 종단 간 신뢰성, 포트로 프로세스 구분 세그먼트(TCP) / 데이터그램(UDP) 포트 번호 TCP, UDP L4 스위치
3 네트워크 경로 선택(라우팅), 논리 주소 패킷 IP 주소 IP, ICMP, IGMP, IPSec, (라우팅: RIP, OSPF, BGP) 라우터, L3 스위치
2 데이터링크 같은 네트워크 안 노드 간 전달, 오류 검출 프레임 MAC 주소 Ethernet, PPP, HDLC, 802.11(Wi-Fi), (ARP) 스위치, 브리지
1 물리 0/1을 전기·빛·전파 신호로 비트 - RS-232, 케이블 규격 허브, 리피터

1-3. TCP/IP 4계층과의 대응

OSI는 "참고용 이론 모델", TCP/IP는 "실제 인터넷이 쓰는 모델"이다.

 OSI 7계층              TCP/IP 4계층          예시
┌──────────────┐
│ 7 응용        │
│ 6 표현        │ ──▶  응용 (Application)    HTTP, DNS, SSH, SMTP
│ 5 세션        │
├──────────────┤
│ 4 전송        │ ──▶  전송 (Transport)      TCP, UDP
├──────────────┤
│ 3 네트워크    │ ──▶  인터넷 (Internet)     IP, ICMP, ARP*
├──────────────┤
│ 2 데이터링크  │ ──▶  네트워크 접근         Ethernet, Wi-Fi
│ 1 물리        │      (Network Access)
└──────────────┘
 * ARP는 교재에 따라 인터넷 계층 또는 네트워크 접근 계층으로 분류

1-4. 캡슐화(Encapsulation)와 역캡슐화

보내는 쪽은 위에서 아래로 내려가며 각 계층의 헤더를 앞에 붙인다(2계층은 뒤에 트레일러 FCS도 붙인다). 받는 쪽은 아래에서 위로 올라가며 헤더를 하나씩 떼어내며 해석한다. 이것이 역캡슐화(Decapsulation)다.

택배 비유: 편지 → 봉투(TCP 헤더: 몇 호 방으로) → 상자(IP 헤더: 어느 아파트로) → 트럭 적재표(이더넷 헤더: 다음 정거장 어디로).

[송신: 위→아래 캡슐화]

응용     :                                  [   HTTP 데이터   ]
전송     :                        [TCP 헤더][   HTTP 데이터   ]         ← 세그먼트
네트워크 :               [IP 헤더][TCP 헤더][   HTTP 데이터   ]         ← 패킷
데이터링크: [Ethernet 헤더][IP 헤더][TCP 헤더][   HTTP 데이터   ][FCS]  ← 프레임
물리     : 0101100101110100 ... (비트 신호)

[수신: 아래→위 역캡슐화] 프레임 → FCS 검사 → 이더넷 헤더 제거 → IP 헤더 제거 → TCP 헤더 제거 → 데이터

각 헤더에는 "다음 계층이 누구인지" 알려주는 필드가 있다. 이게 있어야 받는 쪽이 올바르게 위로 넘긴다.

헤더 "위 계층이 누구인지" 표시하는 필드 대표 값
Ethernet EtherType (2바이트) 0x0800 = IPv4, 0x0806 = ARP, 0x86DD = IPv6, 0x8100 = VLAN 태그
IP Protocol (IPv6는 Next Header) 1 = ICMP, 6 = TCP, 17 = UDP, 50 = ESP, 51 = AH
TCP/UDP 목적지 포트 80 = HTTP, 53 = DNS ...

1-5. 이더넷 프레임과 MAC 주소

MAC 주소는 네트워크 카드(NIC)에 부여된 48비트(6바이트) 물리 주소다. 00:1A:2B:3C:4D:5E처럼 16진수 12자리로 쓴다. 앞 24비트는 제조사 식별 번호(OUI), 뒤 24비트는 제조사가 붙인 일련번호다.

MAC은 "같은 네트워크(같은 브로드캐스트 도메인) 안에서" 다음 장비에 전달할 때 쓰고, IP는 "최종 목적지"를 가리킨다. 라우터를 하나 지날 때마다 MAC 주소는 바뀌고, IP 주소는 (NAT가 없다면) 그대로다. 택배 비유: 최종 주소(IP)는 그대로지만 "이번 구간 트럭이 어느 물류센터로 가는지"(MAC)는 구간마다 바뀐다.

Ethernet II 프레임 구조 (바이트)
┌──────────┬─────┬──────────┬──────────┬──────────┬────────────────────┬─────┐
│ Preamble │ SFD │ 목적지MAC │ 출발지MAC │ EtherType│ Payload(데이터)     │ FCS │
│    7     │  1  │    6     │    6     │    2     │ 46 ~ 1500          │  4  │
└──────────┴─────┴──────────┴──────────┴──────────┴────────────────────┴─────┘
                  └──────── 헤더 14바이트 ─────────┘  └ MTU 1500 ┘       └ CRC 오류검출
무차별 모드(Promiscuous mode)

NIC는 원래 목적지 MAC이 자기 것(또는 브로드캐스트·멀티캐스트)인 프레임만 받아들인다. 무차별 모드로 바꾸면 자기 것이 아닌 프레임도 모두 받아서 위로 올린다. 패킷 캡처(tcpdump, Wireshark)·스니핑의 전제 조건이다.

1-6. ARP — IP 주소로 MAC 주소를 찾는 법

내 PC(192.168.0.10)가 같은 네트워크의 192.168.0.20에게 보내려 한다. IP는 알지만 프레임을 만들려면 상대 MAC 주소가 필요하다. 이 MAC을 알아내는 프로토콜이 ARP(Address Resolution Protocol) 다.

아파트 비유: "302호 사는 김철수 씨 계세요?"라고 단지 방송(브로드캐스트)을 하면, 김철수 씨만 "저예요, 제 현관 번호는 이거예요"라고 직접 답한다(유니캐스트).

동작 단계

  1. 먼저 내 ARP 캐시(최근 알아낸 IP↔MAC 표)를 본다. 있으면 바로 사용.
  2. 없으면 ARP Request를 브로드캐스트(목적지 MAC FF:FF:FF:FF:FF:FF)로 보낸다. 내용: "192.168.0.20 가진 분 MAC 알려주세요. 저는 192.168.0.10 / AA:AA:..."
  3. 같은 네트워크의 모든 호스트가 받지만, 해당 IP를 가진 호스트만 응답한다.
  4. 대상은 ARP Reply를 유니캐스트로 보낸다: "192.168.0.20은 BB:BB:...입니다."
  5. 요청자는 결과를 ARP 캐시에 저장한다(일정 시간 후 만료. 만료 시간은 OS마다 다르다).
sequenceDiagram
    participant A as PC-A 192.168.0.10 (AA:AA)
    participant N as 같은 네트워크 전체
    participant B as PC-B 192.168.0.20 (BB:BB)
    A->>N: ARP Request (브로드캐스트 FF:FF:FF:FF:FF:FF) 192.168.0.20의 MAC은?
    N->>B: (모두 수신, B만 해당)
    B-->>A: ARP Reply (유니캐스트) 192.168.0.20 = BB:BB
    Note over A: ARP 캐시에 192.168.0.20 → BB:BB 저장
    A->>B: 이후 데이터 프레임 (목적지 MAC BB:BB)
ARP의 구조적 약점 → ARP 스푸핑

ARP에는 인증이 없다. 그리고 많은 OS는 요청하지 않은 Reply도 받아서 캐시를 갱신한다. 공격자가 "게이트웨이 IP = 내 MAC"이라는 가짜 Reply를 계속 보내면 피해자의 트래픽이 공격자를 거쳐 간다(중간자 공격). 대응: 정적 ARP 등록(arp -s), 스위치의 DAI(Dynamic ARP Inspection), ARP 감시 도구. 자세한 건 Week07_네트워크 보안.

1-7. 실습 · ARP 캐시 확인

Windows

C:\> arp -a

Interface: 192.168.0.10 --- 0xb
  Internet Address      Physical Address      Type
  192.168.0.1           00-1a-2b-3c-4d-5e     dynamic
  192.168.0.20          bb-bb-bb-11-22-33     dynamic
  192.168.0.255         ff-ff-ff-ff-ff-ff     static
  224.0.0.22            01-00-5e-00-00-16     static

Linux

$ arp -an
? (192.168.0.1) at 00:1a:2b:3c:4d:5e [ether] on eth0
$ ip neigh
192.168.0.1 dev eth0 lladdr 00:1a:2b:3c:4d:5e REACHABLE
ARP 스푸핑 의심 징후

arp -a 결과에서 서로 다른 IP 두 개(특히 게이트웨이)가 같은 MAC을 가지고 있으면 의심한다.

⚠️ 시험 함정

기출 포인트

확인 문제

Q1. OSI 7계층과 데이터 단위(PDU)의 연결로 옳은 것은?
① 물리 계층 - 프레임 ② 데이터링크 계층 - 패킷 ③ 네트워크 계층 - 패킷 ④ 전송 계층 - 비트

Q2. ARP의 동작에 대한 설명으로 옳지 않은 것은?
① ARP Request는 목적지 MAC을 FF:FF:FF:FF:FF:FF로 하여 전송한다.
② ARP Reply는 요청한 호스트에게 유니캐스트로 전송된다.
③ 목적지가 다른 네트워크에 있으면 최종 목적지 호스트의 MAC 주소를 ARP로 직접 요청한다.
④ ARP에는 응답의 진위를 확인하는 인증 절차가 없다.

Q3. 이더넷 헤더의 EtherType 값 중 ARP를 의미하는 것은?
① 0x0800 ② 0x0806 ③ 0x86DD ④ 0x8100

Q4. 패킷이 라우터 2개를 거쳐 목적지에 도달할 때 일반적으로(NAT 없음) 구간마다 바뀌는 값은?
① 출발지 IP 주소 ② 목적지 IP 주소 ③ 출발지·목적지 MAC 주소 ④ 목적지 포트 번호

Q5. 스니핑을 위해 NIC가 자신에게 온 것이 아닌 프레임도 받아들이도록 설정하는 모드는?
① 모니터 모드 ② 무차별(Promiscuous) 모드 ③ 브리지 모드 ④ 전이중(Full-duplex) 모드


Day 2 · IP · TCP · UDP · ICMP 헤더와 동작

2-1. IP 헤더 — 패킷의 "송장"

IP(Internet Protocol)는 패킷을 최종 목적지까지 보내는 3계층 프로토콜이다. "최선형(Best-effort)" 서비스라서 도착을 보장하지 않는다. 분실·순서 뒤바뀜을 바로잡는 건 TCP의 몫이다.

IPv4 헤더 (기본 20바이트, 옵션 포함 최대 60바이트)
 0                   1                   2                   3   (비트)
┌───────┬───────┬───────────────┬───────────────────────────────┐
│Version│  IHL  │  TOS(DSCP/ECN) │         Total Length          │
├───────┴───────┴───────────────┼─────┬─────────────────────────┤
│        Identification         │Flags│    Fragment Offset      │
├───────────────┬───────────────┼─────┴─────────────────────────┤
│      TTL      │   Protocol    │        Header Checksum        │
├───────────────┴───────────────┴───────────────────────────────┤
│                     Source IP Address                         │
├───────────────────────────────────────────────────────────────┤
│                   Destination IP Address                      │
├───────────────────────────────────────────────────────────────┤
│                    Options (가변, 드묾)                        │
└───────────────────────────────────────────────────────────────┘
필드 크기 의미 보안 관련 포인트
Version 4bit 4 = IPv4
IHL 4bit 헤더 길이(4바이트 단위). 최소 5 → 20바이트
Total Length 16bit 헤더+데이터 전체 길이, 최대 65,535 65,535 초과 조립 → Ping of Death
Identification 16bit 단편들이 같은 원본 소속임을 표시
Flags 3bit (예약) / DF(Don't Fragment) / MF(More Fragments)
Fragment Offset 13bit 이 조각이 원본의 어디서 시작하는지(8바이트 단위) 겹치게 조작 → Teardrop
TTL 8bit 라우터를 지날 때마다 1 감소, 0이 되면 폐기하고 ICMP Time Exceeded 반환 traceroute 원리, OS 추정(초기값 Linux 64, Windows 128 등이 흔함)
Protocol 8bit 상위 프로토콜 번호 1 ICMP, 2 IGMP, 6 TCP, 17 UDP, 50 ESP, 51 AH
Header Checksum 16bit 헤더만 검사(데이터 X), TTL 바뀌면 라우터가 재계산
Source / Destination IP 32bit씩 출발지·목적지 주소 출발지 위조 = IP 스푸핑 (Land 공격: 출발지=목적지)

2-2. 단편화(Fragmentation) — Teardrop을 이해하기 위한 준비

IP 패킷이 경로상 MTU(이더넷 1500)보다 크면 조각으로 나눈다. 받는 쪽(최종 목적지)은 Identification이 같은 조각들을 Offset 순서대로 이어 붙여 원본을 복원한다.

예시: 데이터 3,980바이트 + IP 헤더 20바이트 = 4,000바이트 패킷, MTU 1500

조각 데이터 범위(바이트) 데이터 길이 Offset 값 (=시작/8) MF
1 0 ~ 1479 1480 0 1
2 1480 ~ 2959 1480 185 1
3 2960 ~ 3979 1020 370 0 (마지막)

2-3. TCP 헤더와 플래그

TCP(Transmission Control Protocol)는 연결 지향·신뢰성 보장 프로토콜이다. 순서번호로 순서를 맞추고, 확인응답(ACK)으로 도착을 확인하고, 안 온 건 재전송한다.

TCP 헤더 (기본 20바이트)
┌───────────────────────────────┬───────────────────────────────┐
│       Source Port (16)        │     Destination Port (16)     │
├───────────────────────────────┴───────────────────────────────┤
│                    Sequence Number (32)                       │
├───────────────────────────────────────────────────────────────┤
│                 Acknowledgment Number (32)                    │
├───────┬───────┬─┬─┬─┬─┬─┬─┬─┬─┬───────────────────────────────┤
│Offset │Reserv.│C│E│U│A│P│R│S│F│         Window Size (16)      │
│  (4)  │       │W│C│R│C│S│S│Y│I│                               │
│       │       │R│E│G│K│H│T│N│N│                               │
├───────┴───────┴─┴─┴─┴─┴─┴─┴─┴─┼───────────────────────────────┤
│        Checksum (16)          │      Urgent Pointer (16)      │
├───────────────────────────────┴───────────────────────────────┤
│              Options (MSS, Window Scale, SACK 등)             │
└───────────────────────────────────────────────────────────────┘
플래그 이름 의미
SYN Synchronize 연결 요청, 초기 순서번호(ISN) 동기화
ACK Acknowledgment 확인응답 번호 필드가 유효함 (연결 후 거의 모든 패킷에 켜짐)
FIN Finish 정상 종료 요청 ("더 보낼 데이터 없음")
RST Reset 강제 종료/연결 거부 (닫힌 포트에 SYN이 오면 RST로 응답)
PSH Push 버퍼에 모으지 말고 바로 응용 계층으로 전달
URG Urgent 긴급 데이터 있음, Urgent Pointer 유효
(ECE, CWR) 혼잡 알림(ECN)용. 시험에서는 보통 앞의 6개만 다룸

2-4. 3-way Handshake (연결 수립)

TCP는 데이터를 보내기 전에 양쪽이 "서로 받을 준비가 됐고, 내 순서번호는 이거다"를 확인한다. 3번 주고받으므로 3-way.

sequenceDiagram
    participant C as 클라이언트 (CLOSED)
    participant S as 서버 (LISTEN)
    C->>S: ① SYN, seq=1000
    Note left of C: SYN_SENT
    S->>C: ② SYN+ACK, seq=5000, ack=1001
    Note right of S: SYN_RECEIVED
    C->>S: ③ ACK, seq=1001, ack=5001
    Note left of C: ESTABLISHED
    Note right of S: ESTABLISHED
  1. SYN: 클라이언트가 "연결하자, 내 시작 번호는 1000" → 클라이언트 상태 SYN_SENT
  2. SYN+ACK: 서버가 "좋아(ack=1001, 1000 받았으니 다음은 1001), 내 시작 번호는 5000" → 서버 상태 SYN_RECEIVED(리눅스 netstat 표기 SYN_RECV)
  3. ACK: 클라이언트가 "확인(ack=5001)" → 양쪽 ESTABLISHED
SYN Flooding의 원리

서버는 ②를 보낸 뒤 ③을 기다리며 반쯤 열린 연결(half-open) 정보를 백로그 큐에 저장한다. 공격자가 출발지를 위조한 SYN만 대량으로 보내면 ③이 영원히 오지 않아 큐가 가득 차고, 정상 사용자의 연결을 받지 못한다. 서버 netstat에 SYN_RECV가 비정상적으로 많이 보이면 의심한다. 대응: SYN Cookie, 백로그 큐 증가, 타임아웃 단축, 방화벽/IPS 임계치.

2-5. 4-way Handshake (연결 종료)와 상태 전이

TCP는 양방향 통로라서 한 방향씩 따로 닫는다. 그래서 FIN과 ACK가 두 쌍, 총 4번.

sequenceDiagram
    participant C as 클라이언트 (먼저 끊는 쪽)
    participant S as 서버
    Note over C,S: 둘 다 ESTABLISHED
    C->>S: ① FIN
    Note left of C: FIN_WAIT_1
    S->>C: ② ACK
    Note right of S: CLOSE_WAIT
    Note left of C: FIN_WAIT_2
    Note right of S: (남은 데이터 전송 후)
    S->>C: ③ FIN
    Note right of S: LAST_ACK
    C->>S: ④ ACK
    Note left of C: TIME_WAIT (2MSL 대기 후 CLOSED)
    Note right of S: CLOSED
상태 누가 의미
LISTEN 서버 연결 요청 대기 중(포트 열림)
SYN_SENT 클라이언트 SYN 보내고 응답 대기
SYN_RECEIVED 서버 SYN+ACK 보내고 마지막 ACK 대기 (SYN Flooding 시 급증)
ESTABLISHED 양쪽 연결 완료, 데이터 송수신
FIN_WAIT_1 / 2 먼저 끊는 쪽 FIN 보냄 / 그에 대한 ACK 받음
CLOSE_WAIT 나중 끊는 쪽 FIN 받음, 내 쪽 마무리 중 (많이 쌓이면 응용 프로그램이 소켓을 안 닫는 버그)
LAST_ACK 나중 끊는 쪽 내 FIN에 대한 마지막 ACK 대기
TIME_WAIT 먼저 끊는 쪽 마지막 ACK가 유실될 경우를 대비해 2MSL 동안 대기
CLOSED 연결 없음

2-6. UDP — 단순하고 빠른 전송

UDP(User Datagram Protocol)는 연결 수립도, 재전송도, 순서 보장도 없다. 헤더가 8바이트뿐이라 가볍고 빠르다. 실시간성이 중요하거나(음성·영상) 짧은 질의·응답(DNS)에 쓴다.

UDP 헤더 (8바이트)
┌──────────────────┬──────────────────┐
│ Source Port (16) │ Dest Port (16)   │
├──────────────────┼──────────────────┤
│ Length (16)      │ Checksum (16)    │
└──────────────────┴──────────────────┘
비교 TCP UDP
연결 연결 지향(3-way) 비연결
신뢰성 순서·재전송·흐름/혼잡 제어 없음 (필요하면 응용이 처리)
헤더 20바이트~ 8바이트
속도 상대적으로 느림 빠름
전송 단위 세그먼트(바이트 스트림) 데이터그램(메시지 단위)
대표 서비스 HTTP(S), FTP, SSH, Telnet, SMTP, POP3/IMAP DNS 질의, DHCP, SNMP, TFTP, NTP, Syslog, 스트리밍
보안 측면 ISN 예측 → 하이재킹, SYN Flood 출발지 위조 쉬움 → 반사·증폭 DDoS(DNS, NTP, SSDP, Memcached 등)

2-7. ICMP — 오류 보고와 진단

ICMP(Internet Control Message Protocol)는 IP가 전달 중 문제를 알리거나 진단하는 데 쓰는 3계층 프로토콜이다(IP Protocol 번호 1). 포트 번호가 없다.

Type 이름 용도 / 대표 Code
0 Echo Reply ping 응답
3 Destination Unreachable Code 0 네트워크, 1 호스트, 3 포트 도달 불가, 4 단편화 필요(DF 설정)
5 Redirect "더 좋은 경로로 가라" (악용 시 경로 조작 → 보통 차단)
8 Echo Request ping 요청
11 Time Exceeded Code 0 TTL 초과(traceroute), Code 1 재조립 시간 초과
12 Parameter Problem 헤더 오류
13 / 14 Timestamp Request / Reply 시간 정보 (정보 노출 우려로 차단 권고)

2-8. 실습 · tcpdump로 handshake 보기

$ sudo tcpdump -n -S -i eth0 'tcp port 80'
10:15:30.100001 IP 192.168.0.5.51234 > 192.168.0.10.80: Flags [S], seq 1000, win 64240, options [mss 1460,...], length 0
10:15:30.100150 IP 192.168.0.10.80 > 192.168.0.5.51234: Flags [S.], seq 5000, ack 1001, win 65160, options [mss 1460,...], length 0
10:15:30.100300 IP 192.168.0.5.51234 > 192.168.0.10.80: Flags [.], ack 5001, win 502, length 0
10:15:30.100500 IP 192.168.0.5.51234 > 192.168.0.10.80: Flags [P.], seq 1001:1079, ack 5001, win 502, length 78: HTTP: GET / HTTP/1.1

(설명을 위해 순서번호를 단순화한 예시)

⚠️ 시험 함정

기출 포인트

확인 문제

Q1. TCP 3-way handshake에서 클라이언트가 seq=300인 SYN을 보냈고 서버가 seq=800인 SYN+ACK로 응답했다. 클라이언트의 세 번째 패킷 값으로 옳은 것은?
① ACK, seq=300, ack=800 ② ACK, seq=301, ack=801 ③ SYN+ACK, seq=301, ack=801 ④ ACK, seq=801, ack=301

Q2. 서버에서 netstat -an 결과 특정 포트에 SYN_RECV 상태가 수천 개 존재한다. 가장 의심되는 공격은?
① Smurf ② SYN Flooding ③ ARP 스푸핑 ④ Teardrop

Q3. 4-way handshake에서 연결 종료를 먼저 요청한 쪽이 마지막 ACK를 보낸 뒤 일정 시간 머무르는 상태는?
① CLOSE_WAIT ② LAST_ACK ③ FIN_WAIT_2 ④ TIME_WAIT

Q4. 데이터 2,960바이트를 담은 IPv4 패킷(헤더 20바이트)을 MTU 1500 링크로 보낼 때 두 번째 조각의 Fragment Offset 값과 MF 플래그는?
① 1480, MF=0 ② 185, MF=0 ③ 185, MF=1 ④ 1500, MF=1

Q5. ICMP에 대한 설명으로 옳지 않은 것은?
① ping은 Echo Request(Type 8)와 Echo Reply(Type 0)를 사용한다.
② traceroute는 TTL 만료 시 돌아오는 Time Exceeded(Type 11)를 이용한다.
③ ICMP는 전송 계층 프로토콜로 포트 번호를 사용한다.
④ 닫힌 UDP 포트에 패킷이 도착하면 Destination Unreachable(Type 3)이 반환될 수 있다.


Day 3 · 포트 번호 · DNS · DHCP (★ 포트는 무조건 암기)

3-1. 포트 번호란

IP 주소가 "아파트 동 주소"라면 포트 번호는 "호수" 다. 한 컴퓨터(IP 하나) 안에서 웹 서버, 메일 서버, SSH 서버가 동시에 돌아가도 포트 번호로 어느 프로그램에 전달할지 구분한다. 포트는 16비트라 0~65535까지 있다.

구간 범위 용도
Well-known 0 ~ 1023 표준 서비스용. 리눅스에서 이 포트로 서버를 열려면 원칙적으로 root 권한 필요
Registered 1024 ~ 49151 특정 응용이 IANA에 등록 (MySQL 3306, RDP 3389 등)
Dynamic / Private 49152 ~ 65535 클라이언트가 임시로 쓰는 포트(Ephemeral). 실제 OS별 범위는 다를 수 있다(예: 리눅스 기본 32768~60999)

소켓(Socket) = IP 주소 + 포트. 하나의 TCP 연결은 (출발지 IP, 출발지 포트, 목적지 IP, 목적지 포트, 프로토콜) 5가지 값(5-tuple)으로 유일하게 구분된다. 방화벽 규칙도 이 값들로 만든다.

3-2. 주요 포트 표 (서비스가 무슨 일을 하는지까지)

포트 프로토콜 서비스 무슨 일을 하나 보안 메모
20 / 21 TCP FTP 데이터 / 제어 파일 전송. 21로 명령, 20으로 데이터(Active 모드) 평문(계정·비번 노출), 익명 FTP 주의 → SFTP/FTPS
22 TCP SSH (SFTP, SCP 포함) 암호화된 원격 접속·파일 전송 root 직접 로그인 차단 권고
23 TCP Telnet 원격 터미널 평문 → 사용 금지, SSH로 대체
25 TCP SMTP 메일 송신·서버 간 전달 오픈 릴레이 → 스팸 악용. 제출용 587, SMTPS 465
53 UDP/TCP DNS 도메인 ↔ IP 변환 일반 질의 UDP, 존 전송·큰 응답은 TCP
67 / 68 UDP DHCP 서버 / 클라이언트 IP 자동 할당 가짜 DHCP 서버, 고갈 공격
69 UDP TFTP 인증 없는 간이 파일 전송 (장비 설정·부팅 이미지) 인증 없음 → 외부 차단
80 / 443 TCP HTTP / HTTPS 웹 HTTPS = HTTP over TLS. (HTTP/3는 UDP 443 기반 QUIC)
88 TCP/UDP Kerberos 윈도우 도메인 인증
110 / 143 TCP POP3 / IMAP 메일 수신 (POP3=내려받기, IMAP=서버에서 동기화) 보안 버전 POP3S 995, IMAPS 993
123 UDP NTP 시간 동기화 monlist 증폭 공격 악용 사례
137 / 138 / 139 UDP/UDP/TCP NetBIOS 이름 / 데이터그램 / 세션 윈도우 구형 네트워크 이름·공유 외부 노출 금지
161 / 162 UDP SNMP / SNMP Trap 네트워크 장비 관리 (Trap = 장비가 관리자에게 알림) 기본 community public/private 변경, v3 사용
389 / 636 TCP LDAP / LDAPS 디렉터리 서비스(사용자·조직 정보 조회)
445 TCP SMB (Direct) 윈도우 파일·프린터 공유 SMBv1 취약점(EternalBlue) → 워너크라이
514 UDP Syslog 로그 원격 전송 평문·위조 가능 (TCP/TLS 전송 방식도 있음)
1812 / 1813 UDP RADIUS 인증 / 과금 무선·VPN 사용자 인증 (구형 구현은 1645/1646)
3389 TCP RDP 윈도우 원격 데스크톱 무차별 대입 표적 → VPN 뒤에 두기, NLA
1433 / 1521 / 3306 TCP MSSQL / Oracle / MySQL 데이터베이스 외부 직접 노출 금지
179 TCP BGP ISP 간 라우팅
520 UDP RIP 내부 라우팅
암기 묶음

  • 2X는 원격·전송 형제: 20/21 FTP, 22 SSH, 23 Telnet, 25 SMTP
  • 메일 3총사: 25 보내기(SMTP), 110 받아오기(POP3), 143 동기화(IMAP)
  • UDP 대표: 53(질의), 67/68, 69, 123, 161/162, 514 → "작고 빨리 묻고 답하는 것들"
  • 윈도우 공유: 137~139 NetBIOS, 445 SMB, 3389 RDP

3-3. DNS — 이름을 주소로 바꾸는 전화번호부

사람은 www.example.com을 기억하지만 컴퓨터는 IP로 통신한다. DNS(Domain Name System) 는 이름 → IP를 알려주는 분산 데이터베이스다. 하나의 거대한 서버가 아니라, 나무처럼 층층이 나뉜 서버들이 각자 자기 영역(Zone)만 책임진다.

                    . (루트, Root)
          ┌─────────┼──────────┐
         com       net        kr        ← TLD(최상위 도메인)
          │                    │
       example                 co
          │                    │
         www                 naver ...  ← 각 기관의 권한 있는(Authoritative) 서버가 관리

질의 방식 두 가지

sequenceDiagram
    participant PC as 내 PC
    participant R as 로컬 DNS (리졸버, ISP/사내)
    participant Root as 루트 DNS
    participant TLD as .com DNS
    participant Auth as example.com 권한 DNS
    PC->>PC: ① 로컬 캐시, hosts 파일 확인
    PC->>R: ② www.example.com? (재귀적 질의)
    R->>Root: ③ www.example.com?
    Root-->>R: .com 서버에 물어봐 (NS 정보)
    R->>TLD: ④ www.example.com?
    TLD-->>R: example.com 권한 서버에 물어봐
    R->>Auth: ⑤ www.example.com?
    Auth-->>R: A 레코드 203.0.113.10 (TTL 3600)
    R-->>PC: ⑥ 203.0.113.10 (리졸버도 TTL 동안 캐시)

주요 레코드

레코드 의미 예
A 도메인 → IPv4 www → 203.0.113.10
AAAA 도메인 → IPv6 www → 2001:db8::10
CNAME 별칭 → 정식 이름 blog → www.example.com
MX 메일 서버 (우선순위 값 포함) example.com MX 10 mail.example.com
NS 이 영역을 책임지는 네임서버
PTR IP → 도메인 (역방향) 10.113.0.203.in-addr.arpa → www
SOA 영역의 기본 정보(일련번호, 갱신 주기)
TXT 텍스트. SPF·DKIM·DMARC 등 메일 인증에 활용

3-4. DHCP — IP 자동 배정 (DORA)

PC가 네트워크에 연결되면 IP·서브넷 마스크·게이트웨이·DNS 서버 주소가 필요하다. 이를 자동으로 빌려주는 것이 DHCP(서버 UDP 67, 클라이언트 UDP 68)다. "빌려준다(임대, Lease)"는 표현대로 임대 기간이 있다.

PC는 처음엔 자기 IP도 서버 주소도 모르므로 브로드캐스트로 시작한다.

sequenceDiagram
    participant C as 클라이언트 (IP 없음 0.0.0.0)
    participant S as DHCP 서버
    C->>S: ① Discover (브로드캐스트) DHCP 서버 있나요?
    S-->>C: ② Offer 192.168.0.50 어때요? (임대 8시간)
    C->>S: ③ Request (브로드캐스트) 192.168.0.50 쓸게요
    S-->>C: ④ Ack 확정. 게이트웨이 .1, DNS 8.8.8.8
공격 내용 대응
DHCP Starvation(고갈) MAC을 바꿔가며 Discover 폭탄 → 주소 풀 소진 포트 보안(포트당 MAC 수 제한)
Rogue DHCP(가짜 서버) 가짜 서버가 먼저 Offer → 게이트웨이·DNS를 공격자로 지정 DHCP Snooping(신뢰 포트에서만 Offer/Ack 허용)

3-5. 실습 · nslookup / dig

C:\> nslookup www.example.com
Server:  dns.google
Address:  8.8.8.8

Non-authoritative answer:
Name:    www.example.com
Address:  203.0.113.10
$ dig www.example.com A

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41235
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;www.example.com.               IN      A

;; ANSWER SECTION:
www.example.com.        3600    IN      A       203.0.113.10

;; Query time: 23 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)

(예시의 IP 203.0.113.x는 문서용 예약 대역이다.)

⚠️ 시험 함정

기출 포인트

확인 문제

Q1. 서비스와 기본 포트의 연결로 옳지 않은 것은?
① SSH - TCP 22 ② SNMP - UDP 161 ③ POP3 - TCP 143 ④ Syslog - UDP 514

Q2. DNS 존 전송에 대한 설명으로 옳은 것은?
① 클라이언트가 A 레코드를 조회하는 일반 질의를 말한다.
② 주로 UDP 53을 사용하며 크기 제한이 없다.
③ 누구에게나 허용하면 내부 호스트 정보가 노출될 수 있어 보조 DNS 서버로만 제한한다.
④ DNSSEC을 설정하면 존 전송이 자동으로 차단된다.

Q3. DHCP 동작 순서로 옳은 것은?
① Request → Offer → Discover → Ack
② Discover → Offer → Request → Ack
③ Discover → Request → Offer → Ack
④ Offer → Discover → Ack → Request

Q4. 사용자 PC에서 은행 도메인을 입력했는데 위조 사이트로 접속된다. DNS 서버는 정상이었다. 가장 먼저 점검할 파일은?
① /etc/passwd ② hosts 파일 ③ /etc/shadow ④ resolv.conf의 search 항목

Q5. 다음 중 UDP를 기본 전송 프로토콜로 사용하는 서비스로만 묶인 것은?
① DNS 질의, DHCP, TFTP ② FTP, SMTP, SNMP ③ SSH, Telnet, NTP ④ HTTP, POP3, Syslog


Day 4 · IP 주소 · 서브네팅 · NAT · IPv6

4-1. IPv4 주소의 구조

IPv4 주소는 32비트를 8비트씩 4덩어리(옥텟)로 나눠 10진수로 쓴 것이다. 192.168.1.10 = 11000000.10101000.00000001.00001010.

주소는 네트워크 부분 + 호스트 부분으로 나뉜다. 아파트로 치면 "몇 동"(네트워크)과 "몇 호"(호스트)다. 어디까지가 네트워크인지 알려주는 것이 서브넷 마스크다. 마스크의 1인 비트 = 네트워크, 0인 비트 = 호스트.

IP      : 192.168.1.10   = 11000000.10101000.00000001.00001010
마스크  : 255.255.255.0  = 11111111.11111111.11111111.00000000   (/24 = 1이 24개)
          AND 연산 ──────────────────────────────────────────────
네트워크: 192.168.1.0    = 11000000.10101000.00000001.00000000

4-2. 클래스와 특수 주소

클래스 첫 옥텟 첫 비트 기본 마스크 용도
A 0 ~ 127 (실사용 1~126) 0 /8 (255.0.0.0) 대규모
B 128 ~ 191 10 /16 (255.255.0.0) 중규모
C 192 ~ 223 110 /24 (255.255.255.0) 소규모
D 224 ~ 239 1110 - 멀티캐스트
E 240 ~ 255 1111 - 실험·예약
특수 주소 의미
10.0.0.0/8 사설 (A)
172.16.0.0/12 사설 (172.16.0.0 ~ 172.31.255.255)
192.168.0.0/16 사설 (C)
127.0.0.0/8 루프백 (자기 자신, 보통 127.0.0.1)
169.254.0.0/16 APIPA / 링크 로컬 (DHCP 실패 시 자동)
100.64.0.0/10 통신사 대규모 NAT(CGNAT)용 공유 주소
0.0.0.0 "이 호스트/모든 주소"(서버가 0.0.0.0:80으로 대기 = 모든 인터페이스에서 받음)
255.255.255.255 제한된 브로드캐스트 (현재 네트워크 전체)
192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24 문서·예시용

4-3. 서브네팅 — 큰 네트워크를 쪼개기

C클래스 하나(254대)를 한 부서가 다 쓰면 낭비고, 브로드캐스트가 전체에 퍼진다. 호스트 비트 일부를 빌려 네트워크 비트로 쓰면 작은 네트워크 여러 개로 나눌 수 있다.

만능 공식 4개

  1. 호스트 비트 수 h = 32 − 프리픽스
  2. 서브넷당 주소 수 = 2^h (= 블록 크기)
  3. 사용 가능 호스트 = 2^h − 2 (네트워크 주소·브로드캐스트 주소 제외)
  4. 네트워크 주소 = 블록 크기의 배수, 브로드캐스트 = 다음 네트워크 주소 − 1

마지막 옥텟 마스크 값 표 (외워 두면 빠르다)

프리픽스 마지막 옥텟 마스크 2진수 블록 크기 사용 가능 호스트
/24 0 00000000 256 254
/25 128 10000000 128 126
/26 192 11000000 64 62
/27 224 11100000 32 30
/28 240 11110000 16 14
/29 248 11111000 8 6
/30 252 11111100 4 2

블록 크기 = 256 − 마스크 값 (예: 256 − 224 = 32).

예제 ① 192.168.1.0/24

예제 ② 192.168.1.0/26 — 4개로 나누기

서브넷 네트워크 주소 사용 가능 범위 브로드캐스트
1 192.168.1.0 .1 ~ .62 .63
2 192.168.1.64 .65 ~ .126 .127
3 192.168.1.128 .129 ~ .190 .191
4 192.168.1.192 .193 ~ .254 .255

예제 ③ 192.168.10.77/27 — 이 호스트는 어느 네트워크인가 (2진수로)

77       = 0100 1101   (64 + 8 + 4 + 1)
/27 마스크 = 1110 0000   (= 224)
AND      = 0100 0000   = 64   → 네트워크 주소 192.168.10.64
호스트 비트(뒤 5비트)를 모두 1로 → 0101 1111 = 95 → 브로드캐스트 192.168.10.95
사용 가능: 192.168.10.65 ~ 192.168.10.94 (30개)

빠른 방법: 블록 크기 32 → 32의 배수 0, 32, 64, 96... 중 77 이하 최대값 = 64. 다음 블록 96 − 1 = 95가 브로드캐스트.

예제 ④ 10.0.0.0/30 — 라우터 간 연결용

예제 ⑤ 조건으로 마스크 고르기

"한 서브넷에 호스트 50대가 필요하다" → 2^h − 2 ≥ 50 → h = 6 (62) → /26. h = 5면 30대뿐이라 부족.

예제 ⑥ (심화) B클래스 범위 172.16.35.123/20

/20 → 세 번째 옥텟에서 마스크 11110000 = 240 → 255.255.240.0
35  = 0010 0011
240 = 1111 0000
AND = 0010 0000 = 32 → 네트워크 172.16.32.0
블록 크기 16 → 다음 네트워크 172.16.48.0 → 브로드캐스트 172.16.47.255
호스트 수 2^12 − 2 = 4094

4-4. CIDR · VLSM · 경로 요약

VLSM 예: 192.168.1.0/24를 영업(100대), 개발(50대), 관리(20대), 라우터 링크 2개로 나누기 — 큰 것부터 배정한다.

용도 필요 프리픽스 할당 범위
영업 100 /25 (126) 192.168.1.0 ~ .127
개발 50 /26 (62) 192.168.1.128 ~ .191
관리 20 /27 (30) 192.168.1.192 ~ .223
링크1 2 /30 (2) 192.168.1.224 ~ .227
링크2 2 /30 (2) 192.168.1.228 ~ .231

4-5. NAT / PAT — 사설 IP로 인터넷 나가기

사설 IP는 인터넷에서 쓸 수 없다. 공유기(라우터)가 나가는 패킷의 출발지 사설 IP를 공인 IP로 바꾸고, 돌아오는 응답을 다시 원래 사설 IP로 돌려준다. 이 변환 기록이 NAT 테이블이다.

종류 방식 예
Static NAT 사설 1개 ↔ 공인 1개 고정 내부 웹서버를 외부에 공개
Dynamic NAT 공인 IP 풀에서 남는 것을 그때그때 할당
PAT / NAPT (NAT Overload) 공인 IP 1개를 포트 번호로 구분해 다수가 공유 가정용 공유기
(포트 포워딩) 공인IP:특정포트 → 내부IP:포트로 고정 전달 공유기 뒤 서버 공개

PAT 변환 테이블 예 (공인 IP 203.0.113.5 하나로 PC 2대가 같은 웹서버 접속)

내부 (사설IP:포트) 변환 후 (공인IP:포트) 목적지
192.168.0.10:51000 203.0.113.5:40001 198.51.100.80:443
192.168.0.11:51000 203.0.113.5:40002 198.51.100.80:443

두 PC의 내부 포트가 같아도, 바깥 포트를 다르게 붙여서 응답이 오면 표를 보고 정확히 되돌려준다.

[PC .10] ─┐                         ┌──────────────┐
          ├─ 사설망 ─ [NAT 공유기] ──│  인터넷       │── 웹서버
[PC .11] ─┘   192.168.0.0/24  203.0.113.5          └──────────────┘
나갈 때: src 192.168.0.10:51000 → src 203.0.113.5:40001 로 변경
들어올 때: dst 203.0.113.5:40001 → dst 192.168.0.10:51000 로 복원

4-6. IPv6 기초

IPv4 주소(약 43억 개) 고갈로 만든 차세대 IP. 128비트를 16비트씩 8그룹, 16진수로 쓴다.

축약 규칙

원래   : 2001:0db8:0000:0000:0000:ff00:0042:8329
① 각 그룹 앞자리 0 생략 → 2001:db8:0:0:0:ff00:42:8329
② 연속된 0 그룹을 :: 로 한 번만 → 2001:db8::ff00:42:8329
비교 IPv4 IPv6
주소 길이 32비트 128비트
표기 10진수 4옥텟 16진수 8그룹
헤더 20~60바이트 가변, 체크섬 있음 40바이트 고정, 헤더 체크섬 없음, 옵션은 확장 헤더로
단편화 라우터도 가능 출발지만 가능 (라우터는 안 함)
주소 종류 유니·멀티·브로드캐스트 유니·멀티·애니캐스트 (브로드캐스트 없음)
MAC 찾기 ARP NDP(ICMPv6 Neighbor Solicitation/Advertisement)
자동 설정 DHCP SLAAC(자동 설정) 또는 DHCPv6
IPSec 선택 초기 표준에서 구현 필수였으나 이후 권고로 완화
TTL TTL Hop Limit
IPv6 주소 의미
::1 루프백
:: 미지정 주소
fe80::/10 링크 로컬 (같은 링크에서만)
fc00::/7 고유 로컬 (사설 IP와 비슷, ULA)
2000::/3 글로벌 유니캐스트
ff00::/8 멀티캐스트

⚠️ 시험 함정

기출 포인트

확인 문제

Q1. 192.168.5.130/26이 속한 네트워크의 브로드캐스트 주소는?
① 192.168.5.127 ② 192.168.5.191 ③ 192.168.5.192 ④ 192.168.5.255

Q2. 다음 중 사설 IP 주소가 아닌 것은?
① 10.200.1.1 ② 172.20.10.5 ③ 172.33.1.1 ④ 192.168.100.1

Q3. 한 서브넷에 최소 25대의 호스트를 연결해야 할 때 주소 낭비가 가장 적은 서브넷 마스크는?
① 255.255.255.192 ② 255.255.255.224 ③ 255.255.255.240 ④ 255.255.255.248

Q4. 공인 IP 하나를 여러 내부 호스트가 공유하며, 포트 번호로 각 연결을 구분하는 방식은?
① Static NAT ② Dynamic NAT ③ PAT(NAPT) ④ 프록시 ARP

Q5. IPv6에 대한 설명으로 옳지 않은 것은?
① 주소 길이는 128비트이다.
② 브로드캐스트 대신 멀티캐스트를 활용한다.
③ 기본 헤더에 헤더 체크섬 필드가 있어 라우터마다 재계산한다.
④ 이웃의 링크 계층 주소를 찾는 데 ARP 대신 NDP를 사용한다.


Day 5 · 네트워크 장비 · VLAN · 진단 도구 · SMB/NetBIOS

5-1. 장비별 동작 원리

장비 계층 동작 충돌 도메인 브로드캐스트 도메인 보안 의미
리피터 1 약해진 신호 증폭 분리 안 함 분리 안 함
허브 1 받은 신호를 모든 포트로 복사 전체가 하나 하나 꽂기만 하면 남의 트래픽 보임 → 스니핑 쉬움
브리지 2 MAC 보고 구간 전달 (스위치의 원형) 포트별 분리 하나
스위치 2 MAC 주소 테이블을 보고 해당 포트로만 전달 포트별 분리 하나(VLAN 없으면) 스니핑하려면 MAC Flooding·ARP 스푸핑·포트 미러링 필요
라우터 3 라우팅 테이블로 다른 네트워크에 전달 분리 분리 ACL로 패킷 필터링
L3 스위치 3 스위치 + 라우팅 분리
L4 스위치 4 IP+포트 기반 부하분산(로드밸런싱) 서버 부하 분산, 일부 DoS 완화
L7 스위치 7 URL·쿠키 등 내용 기반 분산 콘텐츠 필터링
게이트웨이 주로 3 이상 서로 다른 네트워크·프로토콜 연결 기본 게이트웨이 = 밖으로 나가는 출구 라우터

스위치의 MAC 학습 과정

  1. 프레임이 들어오면 출발지 MAC + 들어온 포트를 MAC 테이블에 기록(학습, Learning)
  2. 목적지 MAC이 테이블에 있으면 그 포트로만 전달(Forwarding)
  3. 없으면 들어온 포트 빼고 모든 포트로 보냄(Flooding)
  4. 일정 시간 안 쓰인 항목은 지움(Aging)
스위치 재밍(MAC Flooding)

위조된 출발지 MAC으로 프레임을 대량 보내 MAC 테이블을 가득 채우면, 새 항목을 못 배우는 스위치가 3번(Flooding) 상태처럼 동작해 허브처럼 모든 포트로 뿌린다 → 스니핑 가능. 대응: 포트 보안(Port Security) 으로 포트당 MAC 개수 제한. → Week07_네트워크 보안

포트 미러링(SPAN): 스위치의 특정 포트 트래픽을 복사해 다른 포트로 보내는 기능. IDS·패킷 분석 장비를 연결할 때 정상적으로 쓴다. (TAP 장비로 회선에서 복사하는 방식도 있다)

5-2. VLAN — 스위치 하나를 여러 네트워크처럼

VLAN(Virtual LAN) 은 물리적으로 같은 스위치에 꽂혀 있어도 논리적으로 다른 네트워크로 나누는 기술이다. 같은 층에 있어도 인사팀과 개발팀을 분리할 수 있다. VLAN이 다르면 브로드캐스트가 서로 닿지 않고, 통신하려면 라우터(L3 장비)를 거쳐야 한다 → 그 지점에서 접근 통제가 가능.

             ┌────────────── 스위치 ──────────────┐
             │ 포트1  포트2  │  포트3  포트4  │ 포트24(Trunk) ──▶ 다른 스위치/라우터
             │ VLAN10 VLAN10 │  VLAN20 VLAN20 │  (802.1Q 태그로 VLAN 구분)
             └───────────────┴────────────────┴─────
               인사팀 PC         개발팀 PC
     VLAN10 ↔ VLAN20 직접 통신 불가 → 라우터/L3 스위치 경유 + ACL

5-3. 진단 명령어 — 출력 읽기

ping

$ ping -c 3 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.512 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.498 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=0.530 ms

--- 192.168.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.498/0.513/0.530/0.013 ms

traceroute / tracert

$ traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  192.168.0.1    0.521 ms  0.480 ms  0.466 ms
 2  10.10.0.1      3.112 ms  3.090 ms  3.201 ms
 3  * * *
 4  203.0.113.1    8.774 ms  8.650 ms  8.702 ms
 ...

netstat / ss — 열린 포트와 연결 상태

$ netstat -antp
Proto Recv-Q Send-Q Local Address        Foreign Address       State        PID/Program name
tcp        0      0 0.0.0.0:22           0.0.0.0:*             LISTEN       812/sshd
tcp        0      0 127.0.0.1:3306       0.0.0.0:*             LISTEN       930/mysqld
tcp        0      0 192.168.0.10:22      192.168.0.5:51234     ESTABLISHED  2201/sshd: user1
tcp        0      0 192.168.0.10:80      198.51.100.7:40112    SYN_RECV     -
tcp        0      0 192.168.0.10:44120   203.0.113.66:4444     ESTABLISHED  3310/bash

tcpdump — CLI 패킷 캡처

예 의미
tcpdump -i eth0 eth0 인터페이스 캡처
tcpdump -n host 192.168.0.5 해당 IP 관련만
tcpdump -n src 10.0.0.1 and dst port 80 출발지·목적지 포트 조합
tcpdump -n net 192.168.0.0/24 네트워크 대역
tcpdump -n icmp / arp / udp port 53 프로토콜별
tcpdump -w cap.pcap / -r cap.pcap 파일로 저장 / 파일 읽기 (Wireshark에서 열 수 있음)
tcpdump -X / -A 내용을 16진수+ASCII / ASCII로 출력 (평문 비밀번호가 보이는 이유)
tcpdump 'tcp[tcpflags] & tcp-syn != 0' SYN 플래그가 켜진 패킷만

Wireshark — GUI 패킷 분석 (2027 출제기준 명시)

Wireshark는 캡처한 패킷을 계층별로 펼쳐 보여주는 분석 도구다. 필터가 두 종류라는 점이 핵심이다.

구분 캡처 필터 디스플레이(표시) 필터
적용 시점 캡처 전 (안 맞는 건 저장 안 함) 캡처 후 (보여주기만 걸러냄)
문법 BPF(tcpdump와 같음) Wireshark 고유 문법
예 host 10.0.0.5 and port 80 ip.addr == 10.0.0.5 && tcp.port == 80

자주 쓰는 디스플레이 필터

필터 의미
ip.addr == 192.168.0.5 출발지 또는 목적지가 해당 IP
ip.src == 10.0.0.1 / ip.dst == ... 출발지 / 목적지 지정
tcp.port == 443 / udp.port == 53 포트
tcp.flags.syn == 1 && tcp.flags.ack == 0 SYN만 켜진 패킷 (연결 시도, SYN 스캔·Flooding 탐지)
tcp.flags.reset == 1 RST 패킷 (닫힌 포트 응답 다수 → 스캔 흔적)
http.request.method == "POST" HTTP POST 요청 (로그인 폼 전송 확인)
dns / arp / icmp 프로토콜별
icmp.type == 8 Echo Request
arp.opcode == 2 ARP Reply (스푸핑 분석)
!(arp or dns) ARP·DNS 제외
frame contains "password" 내용에 문자열 포함

5-4. SMB · NetBIOS — 윈도우 파일 공유

NetBIOS는 원래 소규모 LAN에서 컴퓨터 이름으로 서로 찾고 통신하던 API다. 지금은 TCP/IP 위에서 동작하는 NBT(NetBIOS over TCP/IP) 형태로 남아 있다.

포트 프로토콜 기능
137 UDP NetBIOS 이름 서비스 (이름 → IP)
138 UDP NetBIOS 데이터그램 서비스
139 TCP NetBIOS 세션 서비스 (그 위에서 SMB 동작)
445 TCP SMB Direct — NetBIOS 없이 TCP 위에서 바로 SMB

SMB(Server Message Block) 는 윈도우의 파일·프린터 공유 프로토콜이다(리눅스에서는 Samba로 구현, 옛 이름 CIFS).

버전 특징
SMBv1 오래되고 취약. MS17-010(EternalBlue) 원격 코드 실행 취약점 → 2017년 워너크라이 랜섬웨어 전파 → 비활성화 권고
SMBv2 성능 개선, 명령 단순화
SMBv3 암호화 지원(SMB Encryption), 서명 강화

⚠️ 시험 함정

기출 포인트

확인 문제

Q1. 스위치에 대한 설명으로 옳지 않은 것은?
① 수신 프레임의 출발지 MAC 주소로 MAC 주소 테이블을 학습한다.
② 목적지 MAC이 테이블에 없으면 수신 포트를 제외한 모든 포트로 전달한다.
③ 기본 설정에서 포트마다 브로드캐스트 도메인이 분리된다.
④ MAC 테이블이 가득 차면 허브처럼 동작할 수 있어 스니핑에 악용된다.

Q2. Wireshark에서 TCP 연결 요청(SYN만 설정, ACK 미설정) 패킷만 표시하는 디스플레이 필터는?
① tcp.flags.syn == 1 && tcp.flags.ack == 0
② tcp.flags.syn == 1 && tcp.flags.ack == 1
③ tcp port syn
④ host syn and not ack

Q3. 다음 netstat -antp 결과 중 침해 의심도가 가장 높은 줄은?
① tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 812/sshd
② tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 930/mysqld
③ tcp 0 0 192.168.0.10:44120 203.0.113.66:4444 ESTABLISHED 3310/bash
④ tcp 0 0 192.168.0.10:22 192.168.0.5:51234 ESTABLISHED 2201/sshd

Q4. 브로드캐스트 도메인을 분리할 수 있는 것으로만 묶인 것은?
① 허브, 리피터 ② 스위치(VLAN 미사용), 브리지 ③ 라우터, VLAN ④ 리피터, 브리지

Q5. 2017년 워너크라이 랜섬웨어가 전파에 악용한 서비스와 포트는?
① RDP - TCP 3389 ② SMBv1 - TCP 445 ③ NetBIOS 이름 서비스 - UDP 137 ④ Telnet - TCP 23


Day 6 · 무선 네트워크 보안 · 802.1X · SDN

6-1. 무선랜이 유선보다 위험한 이유

유선은 케이블에 물리적으로 접근해야 도청할 수 있지만, 무선(IEEE 802.11, Wi-Fi)은 전파가 벽 밖까지 퍼진다. 건물 밖 주차장에서도 신호를 잡을 수 있다. 그래서 무선 보안의 핵심은 두 가지다.

기본 용어

6-2. 무선 보안 규격의 진화

WEP (1999) ──▶ WPA (2003) ──▶ WPA2 (2004, 802.11i) ──▶ WPA3 (2018)
 RC4+24bit IV    TKIP(RC4 개선)   AES-CCMP               SAE, GCMP-256(엔터프라이즈 192bit)
 "깨짐"          "임시 땜질"      "현재 표준"            "차세대"
규격 암호화 무결성 키 관리/인증 약점
WEP RC4 + 24비트 IV CRC-32 (암호학적 무결성 아님) 고정 공유키 IV가 짧아 재사용 → 패킷 수집만으로 키 복구. 사용 금지
WPA TKIP (여전히 RC4, 패킷마다 키 혼합) MIC(Michael) PSK 또는 802.1X WEP 하드웨어에서 돌리려고 만든 과도기 규격. 현재 비권장
WPA2 AES-CCMP CCMP에 포함 PSK(Personal) / 802.1X(Enterprise), 4-way handshake로 세션키 생성 PSK 사용 시 handshake를 잡아 오프라인 사전 공격 가능, KRACK(2017, 패치로 해결)
WPA3 AES-CCMP(Personal) / GCMP-256(Enterprise 192비트 모드) 포함 SAE(Dragonfly) — PSK 대체 SAE 덕분에 오프라인 사전 공격 어려움, 전방향 안전성, PMF(관리 프레임 보호) 필수

6-3. Personal(PSK) vs Enterprise(802.1X)

구분 Personal (PSK / SAE) Enterprise (802.1X)
인증 수단 모두가 같은 비밀번호 사용자별 계정 또는 인증서
인증 서버 없음 (AP가 처리) RADIUS 서버
퇴사자 처리 비밀번호를 바꿔 전원 재설정 해당 계정만 비활성화
용도 가정, 소규모 기업

6-4. IEEE 802.1X — 포트 기반 접근 통제

802.1X는 무선뿐 아니라 유선 스위치 포트에도 쓰는 "인증받기 전엔 네트워크 문을 안 열어주는" 표준이다. 인증 전에는 EAP 인증 트래픽만 통과시킨다.

구성요소 역할 예
Supplicant(신청자) 접속하려는 단말 노트북, 스마트폰
Authenticator(인증자) 문지기. 인증 결과에 따라 포트를 열고 닫음 AP, 스위치
Authentication Server(인증 서버) 실제로 계정·인증서를 검증 RADIUS 서버
sequenceDiagram
    participant S as Supplicant (노트북)
    participant A as Authenticator (AP/스위치)
    participant R as 인증 서버 (RADIUS)
    S->>A: 연결 시도 (EAPOL-Start)
    A->>S: EAP-Request/Identity (누구세요?)
    S->>A: EAP-Response/Identity (user1)
    A->>R: RADIUS Access-Request (EAP 메시지 전달)
    R-->>S: (A를 거쳐) EAP 인증 교환 - 예 TLS 인증서 검증
    R->>A: RADIUS Access-Accept (+ 키 정보)
    A->>S: EAP-Success, 포트 열림 (이후 4-way handshake로 암호키 생성)
EAP 방식 인증 평가
EAP-TLS 서버·클라이언트 양쪽 인증서 가장 안전, 인증서 배포 부담
PEAP 서버 인증서로 TLS 터널 → 그 안에서 ID/PW(MS-CHAPv2) 기업에서 널리 사용
EAP-TTLS PEAP와 유사(터널 + 다양한 내부 인증)
EAP-MD5 해시 기반 ID/PW, 상호 인증 X 취약
LEAP 시스코 구형 취약

6-5. 무선 공격과 보조 대책

공격 내용
War Driving 차량 등으로 이동하며 취약한 AP 탐색
Rogue AP 허가받지 않은 AP를 내부망에 몰래 연결 → 외부에서 내부망 진입 통로
Evil Twin 정상 AP와 같은 SSID의 가짜 AP로 사용자를 유인 → 중간자 공격
Deauthentication 위조한 연결 해제 프레임으로 강제로 끊기 → 재연결 때 handshake 캡처, 서비스 거부
WEP 크래킹 IV 수집 후 키 복구
WPA2-PSK 사전 공격 4-way handshake 캡처 후 오프라인 대입

보조 대책은 "보조"일 뿐

6-6. SDN — 네트워크를 소프트웨어로 제어 (2027 출제기준 추가)

전통적인 라우터·스위치는 장비마다 두뇌(제어)와 손발(전달) 이 한 몸에 있다. 정책을 바꾸려면 장비 수백 대에 하나씩 접속해 설정해야 한다.

SDN(Software Defined Networking) 은 두뇌를 떼어내 중앙 컨트롤러에 모으고, 장비는 "시키는 대로 전달만" 하게 만든다.

            ┌────────────── 응용 계층 ──────────────┐
            │ 방화벽 앱 · 부하분산 앱 · 모니터링 앱  │
            └──────────────────┬───────────────────┘
                 Northbound API (REST 등)
            ┌──────────────────┴───────────────────┐
            │         SDN 컨트롤러 (제어 평면)       │  ← 네트워크 전체를 보는 "두뇌"
            └──────────────────┬───────────────────┘
                 Southbound API (대표: OpenFlow)
       ┌──────────────┬────────┴─────┬──────────────┐
    [스위치]       [스위치]       [스위치]          ← 데이터 평면: 플로우 테이블대로 전달만
용어 의미
제어 평면(Control Plane) 경로·정책을 결정하는 부분 → 컨트롤러
데이터 평면(Data Plane) 실제 패킷을 전달하는 부분 → 스위치
Southbound API 컨트롤러 ↔ 스위치. OpenFlow가 대표
Northbound API 응용 ↔ 컨트롤러
플로우 테이블 "이런 패킷(Match)이면 이렇게(Action: 전달/폐기/컨트롤러로 보냄)" 규칙 + 통계(Counter)

⚠️ 시험 함정

기출 포인트

확인 문제

Q1. 무선 보안 규격과 암호화 방식의 연결로 옳은 것은?
① WEP - AES ② WPA - TKIP ③ WPA2 - RC4 ④ WPA3 - DES

Q2. IEEE 802.1X 구성요소에 대한 설명으로 옳은 것은?
① Supplicant는 사용자 인증 정보를 검증하는 서버이다.
② Authenticator는 인증 결과에 따라 포트 접근을 허용·차단하는 AP나 스위치이다.
③ Authentication Server는 접속을 요청하는 단말이다.
④ 단말과 AP 사이에서는 RADIUS 프로토콜로 EAP를 전달한다.

Q3. WEP가 취약한 이유로 거리가 먼 것은?
① 24비트 IV가 짧아 재사용이 발생한다.
② 무결성 검사에 CRC-32를 사용한다.
③ 모든 사용자가 같은 고정 키를 공유한다.
④ 키 교환에 SAE 방식을 사용하여 전방향 안전성이 없다.

Q4. 정상 AP와 동일한 SSID를 사용하는 가짜 AP를 설치하여 사용자 접속을 유도하는 공격은?
① War Driving ② Evil Twin ③ Deauthentication ④ MAC Flooding

Q5. SDN에 대한 설명으로 옳지 않은 것은?
① 제어 평면과 데이터 평면을 분리한다.
② 중앙 컨트롤러가 네트워크 정책을 일괄 관리한다.
③ OpenFlow는 응용 프로그램과 컨트롤러 사이의 Northbound 인터페이스이다.
④ 컨트롤러가 단일 장애점이 될 수 있어 보호가 중요하다.


Day 7 · 주간 정리

이번 주 한 장 정리 (마인드맵)

미니 모의고사 (15문항)

M1. 라우터가 패킷 전달 경로를 결정할 때 주로 참조하는 정보는?
① 목적지 MAC 주소 ② 목적지 IP 주소 ③ 목적지 포트 번호 ④ TCP 순서번호

M2. 다음 중 OSI 2계층에서 동작하는 것으로 짝지어진 것은?
① 허브, 리피터 ② 스위치, 브리지 ③ 라우터, L3 스위치 ④ L4 스위치, 프록시

M3. TCP 플래그 중 연결을 즉시 강제로 끊을 때 사용하는 것은?
① FIN ② PSH ③ RST ④ URG

M4. UDP에 대한 설명으로 옳은 것은?
① 3-way handshake로 연결을 수립한다.
② 헤더 크기는 20바이트이다.
③ 출발지 IP 위조가 쉬워 반사형 DDoS에 자주 악용된다.
④ 슬라이딩 윈도우로 흐름 제어를 한다.

M5. traceroute(리눅스 기본 동작)의 원리로 옳은 것은?
① ICMP Echo Request의 TTL을 255로 고정하여 보낸다.
② TTL을 1부터 증가시키며 각 라우터가 돌려주는 ICMP Time Exceeded로 경로를 파악한다.
③ ARP Request를 경로상 라우터마다 브로드캐스트한다.
④ TCP RST 응답의 순서번호로 홉 수를 계산한다.

M6. 172.16.10.200/28의 네트워크 주소는?
① 172.16.10.192 ② 172.16.10.200 ③ 172.16.10.207 ④ 172.16.10.208

M7. /30 서브넷에서 사용 가능한 호스트 수는?
① 1 ② 2 ③ 4 ④ 6

M8. DNS에 대한 설명으로 옳지 않은 것은?
① MX 레코드는 메일 서버를 지정한다.
② PTR 레코드는 IP 주소로 도메인 이름을 찾는 역방향 조회에 쓰인다.
③ 존 전송은 UDP 53만 사용한다.
④ 클라이언트는 일반적으로 DNS 질의 전에 hosts 파일을 참조한다.

M9. DHCP Snooping으로 막으려는 위협은?
① 가짜 DHCP 서버의 응답 ② DNS 캐시 포이즈닝 ③ SYN Flooding ④ SMB 원격 코드 실행

M10. ARP 스푸핑 공격이 가능한 근본 이유는?
① ARP Reply가 브로드캐스트로 전송되기 때문
② ARP에 응답의 진위를 검증하는 인증 절차가 없기 때문
③ ARP가 TCP 위에서 동작하기 때문
④ ARP 캐시가 영구 저장되기 때문

M11. IPv6의 특징이 아닌 것은?
① 128비트 주소 ② 애니캐스트 주소 지원 ③ 브로드캐스트 주소 지원 ④ 고정 길이 40바이트 기본 헤더

M12. Wireshark의 캡처 필터와 디스플레이 필터에 대한 설명으로 옳은 것은?
① 캡처 필터는 이미 저장된 패킷을 화면에서 걸러낸다.
② 디스플레이 필터는 BPF 문법을 사용한다.
③ 캡처 필터는 캡처 단계에서 조건에 맞지 않는 패킷을 저장하지 않는다.
④ 두 필터는 문법이 완전히 같다.

M13. WPA2-Personal 환경에서 공격자가 4-way handshake를 캡처한 뒤 시도할 수 있는 공격은?
① IV 재사용을 이용한 키 복구 ② 오프라인 사전(Dictionary) 대입 공격 ③ SAE 재전송 공격 ④ VLAN Hopping

M14. 다음 중 평문 전송 서비스와 그 안전한 대체 수단의 연결이 옳지 않은 것은?
① Telnet → SSH ② FTP → SFTP ③ HTTP → HTTPS ④ SNMPv3 → SNMPv1

M15. IP 헤더의 Fragment Offset 값을 조작하여 재조립 시 조각이 서로 겹치게 만들어 시스템 오류를 유발하는 공격은?
① Land ② Smurf ③ Teardrop ④ Ping of Death

카드

오답 / 모르는 용어


네비게이션

이전 다음
Week02_운영체제 기초 ▶